home *** CD-ROM | disk | FTP | other *** search
/ Merciful 5 / Merciful - Disc 5.iso / software / p / pcqpascalv1.2d.lha / Include / Libraries / GadTools.i < prev    next >
Text File  |  1997-05-07  |  19KB  |  500 lines

  1. { GadTools.i }
  2.  
  3. {------------------------------------------------------------------------}
  4.  
  5. {$I   "Include:Exec/Types.i"}
  6. {$I   "Include:Utility/TagItem.i"}
  7. {$I   "Include:Intuition/Intuition.i"}
  8. {$I   "Include:Graphics/Text.i"}
  9. {$I   "Include:Graphics/Gfx.i"}
  10. {$I   "Include:Graphics/RastPort.i"}
  11. {$I   "Include:Libraries/GadToolsBaseVar.i"}
  12.  
  13. {------------------------------------------------------------------------}
  14.  
  15. {  The kinds (almost classes) of gadgets in the toolkit.  Use these
  16.     identifiers when calling CreateGadgetA() }
  17.  
  18. CONST
  19.  GENERIC_KIND  =  0;
  20.  BUTTON_KIND   =  1;
  21.  CHECKBOX_KIND =  2;
  22.  INTEGER_KIND  =  3;
  23.  LISTVIEW_KIND =  4;
  24.  MX_KIND       =  5;
  25.  NUMBER_KIND   =  6;
  26.  CYCLE_KIND    =  7;
  27.  PALETTE_KIND  =  8;
  28.  SCROLLER_KIND =  9;
  29. { Kind number 10 is reserved }
  30.  SLIDER_KIND   =  11;
  31.  STRING_KIND   =  12;
  32.  TEXT_KIND     =  13;
  33.  
  34.  NUM_KINDS     =  14;
  35.  
  36.  
  37. {------------------------------------------------------------------------}
  38.  
  39. {  'Or' the appropriate set together for your Window IDCMPFlags: }
  40.  
  41.  ARROWIDCMP    =  (IDCMP_GADGETUP + IDCMP_GADGETDOWN +
  42.                    IDCMP_INTUITICKS + IDCMP_MOUSEBUTTONS);
  43.  
  44.  BUTTONIDCMP   =  (IDCMP_GADGETUP);
  45.  CHECKBOXIDCMP =  (IDCMP_GADGETUP);
  46.  INTEGERIDCMP  =  (IDCMP_GADGETUP);
  47.  LISTVIEWIDCMP =  (IDCMP_GADGETUP + IDCMP_GADGETDOWN +
  48.                    IDCMP_MOUSEMOVE + ARROWIDCMP);
  49.  
  50.  MXIDCMP       =  (IDCMP_GADGETDOWN);
  51.  NUMBERIDCMP   =  0;
  52.  CYCLEIDCMP    =  (IDCMP_GADGETUP);
  53.  PALETTEIDCMP  =  (IDCMP_GADGETUP);
  54.  
  55. {  Use ARROWIDCMP+SCROLLERIDCMP if your scrollers have arrows: }
  56.  SCROLLERIDCMP =  (IDCMP_GADGETUP + IDCMP_GADGETDOWN + IDCMP_MOUSEMOVE);
  57.  SLIDERIDCMP   =  (IDCMP_GADGETUP + IDCMP_GADGETDOWN + IDCMP_MOUSEMOVE);
  58.  STRINGIDCMP   =  (IDCMP_GADGETUP);
  59.  
  60.  TEXTIDCMP     =  0;
  61.  
  62.  
  63. {------------------------------------------------------------------------}
  64.  
  65. {  Generic NewGadget used by several of the gadget classes: }
  66.  
  67. Type
  68.    NewGadget = Record
  69.     ng_LeftEdge, ng_TopEdge : Short;       {  gadget position }
  70.     ng_Width, ng_Height     : Short;       {  gadget size }
  71.     ng_GadgetText           : String;      {  gadget label }
  72.     ng_TextAttr             : TextAttrPtr; {  desired font for gadget label }
  73.     ng_GadgetID             : Short;       {  gadget ID }
  74.     ng_Flags                : Integer;     {  see below }
  75.     ng_VisualInfo           : Address;     {  Set to retval of GetVisualInfo() }
  76.     ng_UserData             : Address;     {  gadget UserData }
  77.    END;
  78.    NewGadgetPtr = ^NewGadget;
  79.  
  80.  
  81. {  ng_Flags control certain aspects of the gadget.  The first five control
  82.     the placement of the descriptive text.  All larger groups supply a
  83.     default: }
  84.  
  85. CONST
  86.  PLACETEXT_LEFT  = $0001;  { Right-align text on left side }
  87.  PLACETEXT_RIGHT = $0002;  { Left-align text on right side }
  88.  PLACETEXT_ABOVE = $0004;  { Center text above }
  89.  PLACETEXT_BELOW = $0008;  { Center text below }
  90.  PLACETEXT_IN    = $0010;  { Center text on }
  91.  
  92.  NG_HIGHLABEL    = $0020;  { Highlight the label }
  93.  
  94. {------------------------------------------------------------------------}
  95.  
  96. { Fill out an array of these and pass that to CreateMenus(): }
  97.  
  98. Type
  99.    NewMenu = Record
  100.     nm_Type           : Byte;              {  See below }
  101.     nm_Label          : String;            {  Menu's label }
  102.     nm_CommKey        : String;            {  MenuItem Command Key Equiv }
  103.     nm_Flags          : Short;             {  Menu OR MenuItem flags (see note) }
  104.     nm_MutualExclude  : Integer;           {  MenuItem MutualExclude word }
  105.     nm_UserData       : Address;           {  For your own use, see note }
  106.    END;
  107.    NewMenuPtr = ^NewMenu;
  108.  
  109. const
  110. { Needed only by inside IM_ definitions below }
  111.  MENU_IMAGE     = 128;
  112.  
  113. { nm_Type determines what each NewMenu structure corresponds to.
  114.  * for the NM_TITLE, NM_ITEM, and NM_SUB values, nm_Label should
  115.  * be a text string to use for that menu title, item, or sub-item.
  116.  * For IM_ITEM or IM_SUB, set nm_Label to point at the Image structure
  117.  * you wish to use for this item or sub-item.
  118.  * NOTE: At present, you may only use conventional images.
  119.  * Custom images created from Intuition image-classes do not work.
  120.  }
  121.  NM_TITLE      =  1;       { Menu header }
  122.  NM_ITEM       =  2;       { Textual menu item }
  123.  NM_SUB        =  3;       { Textual menu sub-item }
  124.  
  125.  IM_ITEM       =  (NM_ITEM OR MENU_IMAGE);    { Graphical menu item }
  126.  IM_SUB        =  (NM_SUB OR MENU_IMAGE);     { Graphical menu sub-item }
  127.  
  128. { The NewMenu array should be terminated with a NewMenu whose
  129.  * nm_Type equals NM_END.
  130.  }
  131.  NM_END        =  0;       { End of NewMenu array }
  132.  
  133. { Starting with V39, GadTools will skip any NewMenu entries whose
  134.  * nm_Type field has the NM_IGNORE bit set.
  135.  }
  136.  NM_IGNORE     =  64;
  137.  
  138.  
  139. { nm_Label should be a text string for textual items, a pointer
  140.  * to an Image structure for graphical menu items, or the special
  141.  * constant NM_BARLABEL, to get a separator bar.
  142.  }
  143.  NM_BARLABEL   = -1;
  144.  
  145. { The nm_Flags field is used to fill out either the Menu->Flags or
  146.  * MenuItem->Flags field.  Note that the sense of the MENUENABLED or
  147.  * ITEMENABLED bit is inverted between this use and Intuition's use,
  148.  * in other words, NewMenus are enabled by default.  The following
  149.  * labels are provided to disable them:
  150.  }
  151.  NM_MENUDISABLED = MENUENABLED;
  152.  NM_ITEMDISABLED = ITEMENABLED;
  153.  
  154. { New for V39:  NM_COMMANDSTRING.  For a textual MenuItem or SubItem,
  155.  * point nm_CommKey at an arbitrary string, and set the NM_COMMANDSTRING
  156.  * flag.
  157.  }
  158.  NM_COMMANDSTRING = COMMSEQ;
  159.  
  160. { The following are pre-cleared (COMMSEQ, ITEMTEXT, and HIGHxxx are set
  161.  * later as appropriate):
  162.  * Under V39, the COMMSEQ flag bit is not cleared, since it now has
  163.  * meaning.
  164.  }
  165.  NM_FLAGMASK    = NOT (COMMSEQ OR ITEMTEXT OR HIGHFLAGS);
  166.  NM_FLAGMASK_V39 = NOT (ITEMTEXT OR HIGHFLAGS);
  167.  
  168. { You may choose among CHECKIT, MENUTOGGLE, and CHECKED.
  169.  * Toggle-select menuitems are of type CHECKIT|MENUTOGGLE, along
  170.  * with CHECKED if currently selected.  Mutually exclusive ones
  171.  * are of type CHECKIT, and possibly CHECKED too.  The nm_MutualExclude
  172.  * is a bit-wise representation of the items excluded by this one,
  173.  * so in the simplest case (choose 1 among n), these flags would be
  174.  * ~1, ~2, ~4, ~8, ~16, etc.  See the Intuition Menus chapter.
  175.  }
  176.  
  177. { A UserData pointer can be associated with each Menu and MenuItem structure.
  178.  * The CreateMenus() call allocates space for a UserData after each
  179.  * Menu or MenuItem (header, item or sub-item).  You should use the
  180.  * GTMENU_USERDATA() or GTMENUITEM_USERDATA() macro to extract it.
  181.  }
  182.  
  183. FUNCTION GTMENU_USERDATA(m : MenuPtr) : Integer;
  184.  External;
  185.  
  186. FUNCTION GTMENUITEM_USERDATA(mi : MenuItemPtr) : Integer;
  187.  External;
  188.  
  189. const
  190. { These return codes can be obtained through the GTMN_SecondaryError tag }
  191.  GTMENU_TRIMMED = $00000001;      { Too many menus, items, or subitems,
  192.                                          * menu has been trimmed down
  193.                                          }
  194.  GTMENU_INVALID = $00000002;      { Invalid NewMenu array }
  195.  GTMENU_NOMEM   = $00000003;      { Out of memory }
  196.  
  197. {------------------------------------------------------------------------}
  198.  
  199. { Starting with V39, checkboxes and mx gadgets can be scaled to your
  200.  * specified gadget width/height.  Use the new GTCB_Scaled or GTMX_Scaled
  201.  * tags, respectively.  Under V37, and by default in V39, the imagery
  202.  * is of the following fixed size:
  203.  }
  204.  
  205. { MX gadget default dimensions: }
  206.  MX_WIDTH      =  17;
  207.  MX_HEIGHT     =  9;
  208.  
  209. { Checkbox default dimensions: }
  210.  CHECKBOX_WIDTH  = 26;
  211.  CHECKBOX_HEIGHT = 11;
  212.  
  213. {------------------------------------------------------------------------}
  214.  
  215.  
  216. {------------------------------------------------------------------------}
  217.  
  218. {  Tags for GadTools functions: }
  219. CONST
  220.  GT_TagBase        =   TAG_USER + $80000;
  221.  
  222.  GTVI_NewWindow    =   GT_TagBase+1;  { Unused }
  223.  GTVI_NWTags       =   GT_TagBase+2;  { Unused }
  224.  
  225.  GT_Private0       =   GT_TagBase+3;  { (private) }
  226.  
  227.  GTCB_Checked      =   GT_TagBase+4;  { State of checkbox }
  228.  
  229.  GTLV_Top          =   GT_TagBase+5;  { Top visible one in listview }
  230.  GTLV_Labels       =   GT_TagBase+6;  { List to display in listview }
  231.  GTLV_ReadOnly     =   GT_TagBase+7;  { TRUE IF listview is to be
  232.                                               read-only }
  233.  GTLV_ScrollWidth  =   GT_TagBase+8;  { Width of scrollbar }
  234.  
  235.  GTMX_Labels       =   GT_TagBase+9;  { NULL-terminated array of labels }
  236.  GTMX_Active       =   GT_TagBase+10; { Active one in mx gadget }
  237.  
  238.  GTTX_Text         =   GT_TagBase+11; { Text to display }
  239.  GTTX_CopyText     =   GT_TagBase+12; { Copy text label instead of
  240.                                               referencing it }
  241.  
  242.  GTNM_Number       =   GT_TagBase+13; { Number to display }
  243.  
  244.  GTCY_Labels       =   GT_TagBase+14; { NULL-terminated array of labels }
  245.  GTCY_Active       =   GT_TagBase+15; { The active one in the cycle gad }
  246.  
  247.  GTPA_Depth        =   GT_TagBase+16; { Number of bitplanes in palette }
  248.  GTPA_Color        =   GT_TagBase+17; { Palette color }
  249.  GTPA_ColorOffset  =   GT_TagBase+18; { First color to use in palette }
  250.  GTPA_IndicatorWidth = GT_TagBase+19; { Width of current-color indicator }
  251.  GTPA_IndicatorHeight = GT_TagBase+20; { Height of current-color indicator }
  252.  
  253.  GTSC_Top          =   GT_TagBase+21; { Top visible in scroller }
  254.  GTSC_Total        =   GT_TagBase+22; { Total in scroller area }
  255.  GTSC_Visible      =   GT_TagBase+23; { Number visible in scroller }
  256.  GTSC_Overlap      =   GT_TagBase+24; { Unused }
  257.  
  258. {  GT_TagBase+25 through GT_TagBase+37 are reserved }
  259.  
  260.  GTSL_Min          =   GT_TagBase+38; { Slider min value }
  261.  GTSL_Max          =   GT_TagBase+39; { Slider max value }
  262.  GTSL_Level        =   GT_TagBase+40; { Slider level }
  263.  GTSL_MaxLevelLen  =   GT_TagBase+41; { Max length of printed level }
  264.  GTSL_LevelFormat  =   GT_TagBase+42; { Format string for level }
  265.  GTSL_LevelPlace   =   GT_TagBase+43; { Where level should be placed }
  266.  GTSL_DispFunc     =   GT_TagBase+44; { Callback for number calculation
  267.                                               before display }
  268.  
  269.  GTST_String       =   GT_TagBase+45; { String gadget's displayed string }
  270.  GTST_MaxChars     =   GT_TagBase+46; { Max length of string }
  271.  
  272.  GTIN_Number       =   GT_TagBase+47; { Number in integer gadget }
  273.  GTIN_MaxChars     =   GT_TagBase+48; { Max number of digits }
  274.  
  275.  GTMN_TextAttr     =   GT_TagBase+49; { MenuItem font TextAttr }
  276.  GTMN_FrontPen     =   GT_TagBase+50; { MenuItem text pen color }
  277.  
  278.  GTBB_Recessed     =   GT_TagBase+51; { Make BevelBox recessed }
  279.  
  280.  GT_VisualInfo     =   GT_TagBase+52; { result of VisualInfo call }
  281.  
  282.  GTLV_ShowSelected =   GT_TagBase+53; { show selected entry beneath
  283.                 listview, set tag data = NULL for display-only, or pointer
  284.                 to a string gadget you've created }
  285.  GTLV_Selected     =   GT_TagBase+54; { Set ordinal number of selected
  286.                                               entry in the list }
  287.  GT_Reserved0      =   GT_TagBase+55; { Reserved }
  288.  GT_Reserved1      =   GT_TagBase+56; { Reserved for future use }
  289.  
  290.  GTTX_Border       =   GT_TagBase+57; { Put a border around
  291.                                               Text-display gadgets }
  292.  GTNM_Border       =   GT_TagBase+58; { Put a border around
  293.                                               Number-display gadgets }
  294.  
  295.  GTSC_Arrows       =   GT_TagBase+59; { Specify size of arrows for
  296.                                               scroller }
  297.  
  298.  GTMN_Menu         =   GT_TagBase+60; { Pointer to Menu for use by
  299.                                               LayoutMenuItems() }
  300.  GTMX_Spacing      =   GT_TagBase+61; { Added to font height to
  301.                 figure spacing between mx choices.  Use this instead
  302.                 of LAYOUTA_SPACING for mx gadgets. }
  303.  
  304. { New to V37 GadTools.  Ignored by GadTools V36 }
  305.  GTMN_FullMenu     =   GT_TagBase+62; { Asks CreateMenus() to
  306.                 validate that this is a complete menu structure }
  307.  GTMN_SecondaryError =  GT_TagBase+63; { ti_Data is a pointer
  308.                 to a ULONG to receive error reports from CreateMenus() }
  309.  GT_Underscore     =   GT_TagBase+64; { ti_Data points to the symbol
  310.                 that preceeds the character you'd like to underline in a
  311.                 gadget label }
  312.  
  313. { New to V39 GadTools.  Ignored by GadTools V36 and V37 }
  314.  GTMN_Checkmark     =  GT_TagBase+65; { ti_Data is checkmark img to use }
  315.  GTMN_AmigaKey      =  GT_TagBase+66; { ti_Data is Amiga-key img to use }
  316.  GTMN_NewLookMenus  =  GT_TagBase+67; { ti_Data is boolean }
  317.  
  318. { New to V39 GadTools.  Ignored by GadTools V36 and V37.
  319.  * Set to TRUE if you want the checkbox or mx image scaled to
  320.  * the gadget width/height you specify.  Defaults to FALSE,
  321.  * for compatibility.
  322.  }
  323.  GTCB_Scaled         = GT_TagBase+68; { ti_Data is boolean }
  324.  GTMX_Scaled         = GT_TagBase+69; { ti_Data is boolean }
  325.  
  326.  GTPA_NumColors      = GT_TagBase+70; { Number of colors in palette }
  327.  
  328.  GTMX_TitlePlace     = GT_TagBase+71; { Where to put the title }
  329.  
  330.  GTTX_FrontPen       = GT_TagBase+72; { Text color in TEXT_KIND gad }
  331.  GTTX_BackPen        = GT_TagBase+73; { Bgrnd color in TEXT_KIND gad }
  332.  GTTX_Justification  = GT_TagBase+74; { See GTJ_#? constants }
  333.  
  334.  GTNM_FrontPen       = GT_TagBase+72; { Text color in NUMBER_KIND gad }
  335.  GTNM_BackPen        = GT_TagBase+73; { Bgrnd color in NUMBER_KIND gad }
  336.  GTNM_Justification  = GT_TagBase+74; { See GTJ_#? constants }
  337.  GTNM_Format         = GT_TagBase+75; { Formatting string for number }
  338.  GTNM_MaxNumberLen   = GT_TagBase+76; { Maximum length of number }
  339.  
  340.  GTBB_FrameType      = GT_TagBase+77; { defines what kind of boxes
  341.                                             * DrawBevelBox() renders. See
  342.                                             * the BBFT_#? constants for
  343.                                             * possible values
  344.                                             }
  345.  
  346.  GTLV_MakeVisible    = GT_TagBase+78; { Make this item visible }
  347.  GTLV_ItemHeight     = GT_TagBase+79; { Height of an individual item }
  348.  
  349.  GTSL_MaxPixelLen    = GT_TagBase+80; { Max pixel size of level display }
  350.  GTSL_Justification  = GT_TagBase+81; { how should the level be displayed }
  351.  
  352.  GTPA_ColorTable     = GT_TagBase+82; { colors to use in palette }
  353.  
  354.  GTLV_CallBack       = GT_TagBase+83; { general-purpose listview call back }
  355.  GTLV_MaxPen         = GT_TagBase+84; { maximum pen number used by call back }
  356.  
  357.  GTTX_Clipped        = GT_TagBase+85; { make a TEXT_KIND clip text }
  358.  GTNM_Clipped        = GT_TagBase+85; { make a NUMBER_KIND clip text }
  359.  
  360.  
  361. {------------------------------------------------------------------------}
  362.  
  363. { Justification types for GTTX_Justification and GTNM_Justification tags }
  364.  GTJ_LEFT   = 0;
  365.  GTJ_RIGHT  = 1;
  366.  GTJ_CENTER = 2;
  367.  
  368. {------------------------------------------------------------------------}
  369.  
  370. { Bevel box frame types for GTBB_FrameType tag }
  371.  BBFT_BUTTON      = 1;  { Standard button gadget box }
  372.  BBFT_RIDGE       = 2;  { Standard string gadget box }
  373.  BBFT_ICONDROPBOX = 3;  { Standard icon drop box     }
  374.  
  375. {------------------------------------------------------------------------}
  376.  
  377. { Typical suggested spacing between "elements": }
  378.  INTERWIDTH    =  8;
  379.  INTERHEIGHT   =  4;
  380.  
  381. {------------------------------------------------------------------------}
  382.  
  383.  
  384. {  "NWay" is an old synonym for cycle gadgets }
  385.  NWAY_KIND    =   CYCLE_KIND;
  386.  NWAYIDCMP    =   CYCLEIDCMP;
  387.  GTNW_Labels  =   GTCY_Labels;
  388.  GTNW_Active  =   GTCY_Active;
  389.  
  390. {------------------------------------------------------------------------}
  391.  
  392. { These two definitions are obsolete, but are here for backwards
  393.  * compatibility.  You never need to worry about these:
  394.  }
  395.  GADTOOLBIT    =  ($8000);
  396. { Use this mask to isolate the user part: }
  397.  GADTOOLMASK   =  NOT (GADTOOLBIT);
  398.  
  399. {------------------------------------------------------------------------}
  400.  
  401. { These definitions are for the GTLV_CallBack tag }
  402.  
  403. { The different types of messages that a listview callback hook can see }
  404.  LV_DRAW     =  $202;    { draw yourself, with state }
  405.  
  406. { Possible return values from a callback hook }
  407.  LVCB_OK      = 0;         { callback understands this message type    }
  408.  LVCB_UNKNOWN = 1;         { callback does not understand this message }
  409.  
  410. { states for LVDrawMsg.lvdm_State }
  411.  LVR_NORMAL           = 0; { the usual                 }
  412.  LVR_SELECTED         = 1; { for selected gadgets      }
  413.  LVR_NORMALDISABLED   = 2;         { for disabled gadgets      }
  414.  LVR_SELECTEDDISABLED = 8;         { disabled and selected     }
  415.  
  416. Type
  417. { structure of LV_DRAW messages, object is a (struct Node *) }
  418.  LVDrawMsg = Record
  419.     lvdm_MethodID       : Integer;     { LV_DRAW                   }
  420.     lvdm_RastPort       : RastPortPtr; { where to render to        }
  421.     lvdm_DrawInfo       : DrawInfoPtr; { useful to have around     }
  422.     lvdm_Bounds         : Rectangle;   { limits of where to render }
  423.     lvdm_State          : Integer;     { how to render     }
  424.  end;
  425.  LVDrawMsgPtr = ^LVDrawMsg;
  426.  
  427. {------------------------------------------------------------------------}
  428.  
  429.  
  430. {
  431. --- functions in V36 OR higher (distributed as Release 2.0) ---
  432.  
  433.  Gadget Functions
  434. }
  435. FUNCTION CreateGadgetA(kind : Integer; gad, ng : GadgetPtr; taglist : Address) : GadgetPtr;
  436.  External;
  437.  
  438. PROCEDURE FreeGadgets(gad : GadgetPtr);
  439.  External;
  440.  
  441. PROCEDURE GT_SetGadgetAttrsA(gad : GadgetPtr; win : WindowPtr; req : RequesterPtr; taglist : Address);
  442.  External;
  443.  
  444. { Menu functions }
  445. FUNCTION CreateMenusA(nm : newmenuPtr; taglist : Address) : MenuPtr;
  446.  External;
  447.  
  448. PROCEDURE FreeMenus(m : menuPtr);
  449.  External;
  450.  
  451. FUNCTION LayoutMenuItemsA(firstitem : MenuItemPtr; vi : Address; taglist : Address) : Boolean;
  452.  External;
  453.  
  454. FUNCTION LayoutMenusA(firstmenu : MenuPtr; vi, taglist : Address) : Boolean;
  455.  External;
  456.  
  457. { Misc Event-Handling Functions }
  458. FUNCTION GT_GetIMsg(iport : MsgPortPtr) : IntuiMessagePtr;
  459.  External;
  460.  
  461. PROCEDURE GT_ReplyIMsg(imsg : IntuiMessagePtr);
  462.  External;
  463.  
  464. PROCEDURE GT_RefreshWindow(win : WindowPtr; req : RequesterPtr);
  465.  External;
  466.  
  467. PROCEDURE GT_BeginRefresh(win : WindowPtr);
  468.  External;
  469.  
  470. PROCEDURE GT_EndRefresh(win : WindowPtr; complete : Boolean);
  471.  External;
  472.  
  473. FUNCTION GT_FilterIMsg(imsg : IntuiMessagePtr) : IntuiMessagePtr;
  474.  External;
  475.  
  476. FUNCTION GT_PostFilterIMsg(imsg : IntuiMessagePtr) : IntuiMessagePtr;
  477.  External;
  478.  
  479. FUNCTION CreateContext( PtrToEmptyGadgetRecord : Address ) : GadgetPtr;
  480.  External;
  481.  
  482. { Rendering Functions }
  483. PROCEDURE DrawBevelBoxA(rport : RastPortPtr;left,top,width,height : Short; taglist : Address);
  484.  External;
  485.  
  486. { Visuals Functions }
  487. FUNCTION GetVisualInfoA(Scr : screenPtr; taglist : Address) : Address;
  488.  External;
  489.  
  490. PROCEDURE FreeVisualInfo(vi : Address);
  491.  External;
  492.  
  493.  
  494. {--- functions in V39 or higher (Release 3) ---}
  495.  
  496. FUNCTION GT_GetGadgetAttrsA(gad : GadgetPtr; Win : WindowPtr;
  497.                             req : RequesterPtr; taglist : Address) : Integer;
  498.     External;
  499.  
  500.